import Cookies from 'js-cookie'

const TokenKey = 'Admin-Token'

export function getToken() {
  return Cookies.get(TokenKey)
}

export function setToken(token) {
  // 设置 cookie 属性 - 在HTTP环境下不使用secure
  const options = {
    expires: 7, // 7天过期
    path: '/',
    // 内网HTTP环境不使用secure，避免cookie被拒绝
    secure: false, 
    sameSite: 'lax' // 改为lax，避免在内网环境下过于严格
  }
  
  return Cookies.set(TokenKey, token, options)
}

export function removeToken() {
  return Cookies.remove(TokenKey, {
    path: '/',
    secure: false,
    sameSite: 'lax'
  })
}

// 检查 token 是否过期
export function isTokenExpired() {
  const token = getToken()
  if (!token) return true
  
  try {
    // 解析 JWT token
    const base64Url = token.split('.')[1]
    const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')
    const jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
      return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)
    }).join(''))

    const { exp } = JSON.parse(jsonPayload)
    return exp * 1000 < Date.now()
  } catch (e) {
    return true
  }
}

// 获取 token 中的用户信息
export function getTokenUserInfo() {
  const token = getToken()
  if (!token) return null
  
  try {
    const base64Url = token.split('.')[1]
    const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')
    const jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
      return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)
    }).join(''))

    return JSON.parse(jsonPayload)
  } catch (e) {
    return null
  }
}
